module("booter.LuaResMgr",package.seeall)

local resMgr = Framework.ResMgr.Instance

function _checkIsPathValid(assetUrl)
    if nil == assetUrl then
        logError("LuaResMgr _checkIsPathValid, assetUrl can not be nil!")
        return false
    end
    return true
end

--加载ab资源
--@ assetUrl 资源路径
--@ needPreload 是否需要预加载ab中的资源。如果ab中只有一个资源的话，可以使用此参数。
--@ loadedCb 回调方法
--@ loadedObj 回调方法所属对象，可以为空
function loadAbAsset(assetUrl, needPreload, loadedCb, loadedObj)
    if not _checkIsPathValid(assetUrl) then
        return
    end
    resMgr:GetAbAssetForLua(assetUrl, needPreload, loadedCb, loadedObj)
end

--加载非ab资源
--@ assetUrl 资源路径
--@ assetType 资源类型 参看 C#中的AssetType类
--@ loadedCb 回调方法
--@ loadedObj 回调方法所属对象，可以为空
function loadNonAbAsset(assetUrl, assetType, loadedCb, loadedObj)
    if not _checkIsPathValid(assetUrl) then
        return
    end
    resMgr:GetNonAbAssetForLua(assetUrl, assetType, loadedCb, loadedObj)
end

--加载持久化资源
--@ fullUrl 资源全路径
--@ assetType 资源类型 参看 C#中的AssetType类
--@ loadedCb 回调方法
--@ loadedObj 回调方法所属对象，可以为空
function loadPersistentRes(fullUrl, assetType, loadedCb, loadedObj)
    if nil == fullUrl then
        logError("LuaResMgr loadPersistentRes, fullUrl can not be nil!")
        return false
    end
    resMgr:GetPersistentResForLua(fullUrl, assetType, loadedCb, loadedObj)
end

--如果某个资源不用了，要调用此方法，移除其回调
--@ assetUrl：资源路径
--@ loadedCb：回调方法
--@ loadedObj: 回调方法所属lua对象，可以为空
function removeAssetLoadCb(assetUrl, loadedCb, loadedObj)
    resMgr:RemoveAssetItemCb(assetUrl, loadedCb, loadedObj)
end

setGlobal("loadAbAsset", loadAbAsset)
setGlobal("loadNonAbAsset", loadNonAbAsset)
setGlobal("loadPersistentRes", loadPersistentRes)
setGlobal("removeAssetLoadCb", removeAssetLoadCb)
setGlobal("GameResMgr", resMgr)


--loadAbAsset("effects/always", false)